$(document).ready(function() {
    verifyLogin();
    atualizaGrid();

    $("#inputPesquisar").keyup(function() {
        var index = $(this).parent().index();
        var nth = "#tableCategorias td:nth-child(" + (index + 2).toString() + ")";
        var valor = $(this).val().toUpperCase();
        $("#tableCategorias tbody tr").show();
        $(nth).each(function() {
            if ($(this).text().toUpperCase().indexOf(valor) < 0) {
                $(this).parent().hide();
            }
        });
    });

    $("#inputPesquisar").blur(function() {
        $(this).val("");
    });

});

$("#btnNovaCategoria").click(function() {
    $("#cadastroCategoriasModal").modal("show");
    $("#frmCategorias")[0].reset();
    $("#errorEmpty").hide();
    $('#inputCategoria').removeClass('alert-danger');
    $("#errorServer").hide();
    $("#inputId").val(0);
});

$("#inputPesquisar").keyup(function(e) {
    if (e.keyCode === 13)
        atualizaGrid();
});

$("#btnPesquisar").click(function() {
    atualizaGrid();
});

function atualizaGrid() {

    $("#tableCategorias").find("tbody tr").remove();
    $("#tableCategorias").find("tbody").append('<tr><td colspan=10><div class="alert alert-info"><img src="img/ajax-loader.gif"> Carregando...</div></td></tr>');

    $.ajax({
        type: "get",
        url: rootUrl + "categoria/listAll",
        dataType: "json",
        success: function(data) {
            $("#tableCategorias").find("tbody tr").remove();
            data.result.forEach(function(categoria) {
                row = "<tr>"
                        + "<td>" + categoria.id
                        + "</td><td>" + categoria.nome
                        + "</td class='text-right'><td class='text-center'> <a class='btn btn-info btn-xs' href='#' id='edit' data-id='" + categoria.id + "'><span class='glyphicon glyphicon-edit'></span> Editar</a> <a href='#' class='btn btn-danger btn-xs' id='delete' data-id='" + categoria.id + "' data-nome='" + categoria.nome + "'><span class='glyphicon glyphicon-remove'></span> Deletar</a>"
                        + "</td></tr>";
                $("#tableCategorias > tbody:last").append(row);
            });
        }
    });
}


$('#salvar').click(function() {

    var valido = true;
    //remove o erro destacado em todos os inputs
    if ($('#inputCategoria').val().length === 0)
    {
        valido = false;
        $('#inputCategoria').addClass('alert-danger');
    }
    else
         $('#inputCategoria').removeClass('alert-danger');

    if (valido)
    {
        travarFormulario();

        categoria = JSON.stringify({
            id: $("#inputId").val(),
            nome: $("#inputCategoria").val()
        });

        $.ajax({
            type: "post",
            url: rootUrl + "categoria/save",
            dataType: "json",
            data: categoria,
            success: function(result) {
                destravarFormulario();
                $('#cadastroCategoriasModal').modal('hide');
                $("form")[0].reset();
                atualizaGrid();
            },
            error: function(result) {
                destravarFormulario();
                $("#errorServer").html(getErrorMessage(result.responseText));
                $("#errorServer").show();
            }
        });
    }
    else
    {
        $("#errorEmpty").show();
        $("#errorServer").hide();
    }

});

function travarFormulario() {
    $("#errorEmpty").hide();
    $("form").hide();
    $("#saveMessage").show();
    $("#salvar").addClass("disabled");
    $("#clearForm").addClass("disabled");
}

function destravarFormulario() {
    $("#errorEmpty").hide();
    $("#errorServer").hide();
    $("form").show();
    $("#saveMessage").hide();
    $("#salvar").removeClass("disabled");
    $("#clearForm").removeClass("disabled");
}


$("#edit").live("click", function() {

    id = $(this).attr("data-id");

    $("#errorServer").hide();
    $("#errorEmpty").hide();
    $("#errorServer").hide();
    $("#errorEmpty").hide();
    //Limpa marcação da caixa de texto
    $('#inputCategoria').parents("div").removeClass("error");
    //Limpa mensagem de campo requerido
    $("#errorEmpty").hide();
    $("form")[0].reset();

    $.ajax({
        type: "get",
        url: rootUrl + "categoria/list/" + id,
        dataType: "json",
        success: function(data) {

            categoria = data.result;

            $("#inputId").val(categoria.id);
            $("#inputCategoria").val(categoria.nome);
            $("#cadastroCategoriasModal").modal("show");
        }
    });
});

$("#delete").live("click", function() {
    id = $(this).attr("data-id");
    nome = $(this).attr("data-nome");
    $("#lblCategoriaDelete").text(nome);

    $("#errorServerCategoria").hide();
    $("#confirmDeleteModal").modal("show");
    $("#btnConfirmar").click(function() {
        $("#deleteMessage").show();
        $.ajax({
            type: "post",
            url: rootUrl + "categoria/delete",
            dataType: "json",
            data: JSON.stringify({id: id}),
            success: function() {
//                row.parent().parent().parent().fadeTo(400, 0, function() {
//                    row.parent().parent().parent().remove();
//                });
                $("#deleteMessage").hide();
                $("#confirmDeleteModal").modal("hide");
                atualizaGrid();
            },
            error: function(erro) {
                $("#errorServerCategoria").html(getErrorMessage(erro.responseText));
                $("#errorServerCategoria").show();
            }
        });
    });

});